﻿/*
 * Erstellt mit SharpDevelop.
 * Benutzer: Kai Patrick
 * Datum: 24.04.2008
 * Zeit: 15:27
 * 
 * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
 */

using System;
using System.Collections.Generic;

namespace Gamadus.Core.Resources
{
	public enum Type
	{
		Sprite,
		Background,
		Object,
		Room,
		Class,
		Unknown
	}
	
	/// <summary>
	/// Description of Resource.
	/// </summary>
	public class Resource : Node
	{
		protected Project m_project;
		protected Settings m_settings;
		protected Resources.Type m_type;
		protected int m_id;
		
		public Resource(int id, string name, Project project) : base(name)
		{
			m_id = id;
			m_project = project;
		}
		
		protected int GetNextId()
		{
			return m_project.NextId[m_type++];
		}
		
		public Settings Settings
		{
			get
			{
				return m_settings;
			}
		}
		
		public string Name
		{
			get
			{
				return m_name;
			}
			set
			{
				if(m_project.IsValidName(m_name,this))
					m_name = value;
			}
		}
//		public string Name
//		{
//			get
//			{
//				return name;
//			}
//			set
//			{
//				if(ResourceMgr.Instance.IsValidName(value))
//				{
//					name = value;
//				}
//				Node.Text = name;
//				if(editWindow != null)
//					editWindow.UpdateEditForm();
//			}
//		}
		
//		private Dictionary<string,object> settings = new Dictionary<string,object>();
//		public Dictionary<string,object> Settings
//		{
//			get
//			{
//				return settings;
//			}
//		}
//		
//		protected ResourceType type;
//		public ResourceType Type
//		{
//		
//			get
//			{
//				return type;
//			}
//		}
//		private int id;
//		public int ID
//		{
//			get
//			{
//				return id;
//			}
//		}
//		
//		public Resource(int id)
//		{
//			this.type = ResourceType.Unknown;
//			this.id = id;
//		}
//		public void ShowEditWindow()
//		{
//			if(editWindow == null)
//			{
//				editWindow = showEditForm();
//				ResourceMgr.Instance.editWindows.Add(editWindow);
//			}
//			else
//			{
//				(editWindow as Form).Activate();
//			}
//		}
//		public void CloseEditorHandle(bool didChanges)
//		{
//			ResourceMgr.Instance.editWindows.Remove(editWindow);
//			editWindow = null;
//			if(didChanges)
//			ResourceMgr.Instance.DidChanges = true;
//		}
//		
//		protected virtual IEditWindow showEditForm()
//		{
//			throw new NotImplementedException();
//		}
//		
//		protected void CloseEditForm()
//		{
//			editWindow.Close();
//		}
//		
		public virtual void WriteXml(System.Xml.XmlTextWriter xml)
		{
			throw new NotImplementedException();
		}
		public virtual void ReadXml(System.Xml.Linq.XElement element)
		{
			throw new NotImplementedException();
		}
	}
}
